﻿using System;
using System.Collections.Generic;
using System.Text;

namespace Tarea5
{
    interface ObservableInterface
    {
        /// <summary>
        /// Notify all observers for updates.
        /// </summary>
        /// <param name="state">this model's new state</param>
        /// <param name="msg">last action performed in this model</param>
        /// <param name="info">further information about this model's last action.</param>
        void NotifyAll(StateInterface state, string msg, string info);

        /// <summary>
        /// Register an observer object for updates about this object.
        /// </summary>
        /// <param name="o">the observer object</param>
        void RegisterObserver(ObserverInterface o);

        /// <summary>
        /// Unregister an observer object for updates about this object.
        /// </summary>
        /// <param name="o">the observer object</param>
        void RemoveObserver(ObserverInterface o);
    }
}
